/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package isi.corba.implementation;

import isi.corba.idl.Enchere.Client;
import isi.corba.idl.Enchere.GestClientPOA;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
import org.omg.PortableServer.*;
import org.omg.PortableServer.POA;
import java.util.Properties;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;
import org.omg.PortableInterceptor.SYSTEM_EXCEPTION;

/**
 *
 * @author romain
 */


public class ServerClient extends GestClientPOA {
	private ORB orb;
        private EntityManager em;

	public void setORB(ORB orb_val) { orb = orb_val; }
	public String sayHello() { return "\nHello world !!\n"; }
	public void shutdown() { orb.shutdown(false); }

    public ServerClient(ORB orb,EntityManager em) {
        this.orb = orb;
        this.em=em;
    }



    @Override
        public Client creer(String login, String nom, String prenom, String mail, String adresse) {

        isi.corba.entites.Client aCreer= new  isi.corba.entites.Client(nom, prenom, login, isi.corba.entites.Client.createMDP());
        aCreer.setAdresse(adresse);
        aCreer.setEmail(mail);
        EntityTransaction transac = em.getTransaction();
        transac.begin();
        em.persist(aCreer);
        transac.commit();

        Client cltCorba = new Client(aCreer.getId(), aCreer.getLogin(), aCreer.getMotPasse(),
                aCreer.getNom(), aCreer.getPrenom(), aCreer.getEmail(), aCreer.getAdresse());
       
        

        System.out.println("ServerClient creation client ok!!!!");
        System.out.println("Login : " + login);
        System.out.println("Nom : " + nom);
        System.out.println("Prenom : " + prenom);
        System.out.println("Mail : " + mail);
        System.out.println("Adresse : " + adresse);

      

        return cltCorba;

    }

    @Override
    public Client logger(String login, String mdp) {

        // on recherche une personne avec ces identifiants
        // création de la requete
        Query rqt=em.createQuery("SELECT c FROM Client c WHERE c.login=:log AND c.motPasse=:mdp");

        // paramètrage des paramètres
        rqt.setParameter("log",login);
        rqt.setParameter("mdp",mdp);

        // client "JPA"
        isi.corba.entites.Client clt;

        // client "Corba"
         Client cltCorba = null;
        try {
             clt = (isi.corba.entites.Client) rqt.getSingleResult();

             cltCorba = new Client(clt.getId(), clt.getLogin(), clt.getMotPasse(),
                clt.getNom(), clt.getPrenom(), clt.getEmail(), clt.getAdresse());

        } catch(javax.persistence.NoResultException e) {
            // on n'a pas pu récupérer le couple
            // donc le couple n'existe pas dans la bd
            System.out.println("Client " + login + " de mot de passe " + mdp + " non trouvé.");
             cltCorba = new Client(-1, "", "", "", "", "", "");
        }

        return cltCorba;


    }
}